1
函数式范式:转换优于修改
AI019Lesson 2
00:00

函数式范式将开发者的思维模式从“更新一个有状态的盒子”转变为 应用数学变换 到不可变值。在 Elixir 中,数据永远不会被改变;它只会以新的形式重生。

1. 数学断言

当你写下 $x = a + 1$ 时,你并不是将结果赋给一个变量。相反,你只是在 断言 表达式 $x$ 与 $a + 1$ 具有相同值。这与代数逻辑一致,其中 $x$ 在特定上下文中代表一个固定值。

2. 不可变性作为保障

在 Elixir 中, 所有值都是不可变的数据一旦创建便无法被更改。这消除了函数可能意外修改全局变量或传入对象的“副作用”,确保代码具有可预测性且线程安全。

之前(输入)"elixir"String.capitalize之后(结果)"Elixir"原始数据保持不变

3. 转换与修改

我们从不在原地修改数据。Elixir 没有赋值操作;相反,它试图 将值与模式匹配。要“改变”一个值,我们通过函数传递原始数据,生成一个全新的版本。

iex> name = "elixir"
"elixir"
iex> cap_name = String.capitalize name
"Elixir"
iex> name
"elixir"(仍然完好无损!)
main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>